package com.yaoxiaoqing.objectclass;


import java.util.Arrays;

/**
 * 某系统的数字密码是一个四位数，如1983，为了安全，需要加密后再传输，
 * 加密规则是:对密码中的每位数都加5,再对10求余，最后将所有数字顺序反转，
 * 得到一串加密后的新数，请设计出满足本需求的加密程序!
 *      1   9   8   3
 *+5    5   14  13  8
 * %10  6   4   3   8
 * 反转  8   3   4   6
 *
 */
public class NumberEncrypt {
    public static void main(String[] args) {
        System.out.println(encrypt(1983));//8346
        System.out.println(encrypt(8346));//1983
    }
    public  static  String encrypt(int number) {
        //1.拆分密码数字
        int[] nums = split(number);// alt + enter 快速创建
        //nums=[1,9,8,3]
        for (int i = 0; i < nums.length; i++) {
            nums[i] = (nums[i] + 5) % 10;
        }
        //nums=[6,4,3,8]
        int[] arr = reverse(nums);

        String data = "";
        //拼接数组
        for (int i = 0; i < arr.length; i++) {
            data += arr[i];
        }
        return data;
    }

    public static int[] split(int number) {
        //number=1983
        int[] nums = new int[4];
        nums[0] = number / 1000;
        nums[1] = (number / 100) % 10;
        nums[2] = (number / 10) % 10;
        nums[3] = number % 10;
        return nums;
    }

    public static int[] reverse(int[] arr) {
        for (int i = 0; i < arr.length/2; i++) {
            int temp = arr[arr.length - i - 1];
            arr[arr.length - i - 1] = arr[i];
            arr[i] = temp;
        }
        return arr;
    }

}
